home *** CD-ROM | disk | FTP | other *** search
/ Turn the Power On! 3 / Turn the Power On! HP Volume III (HP)(1995).ISO / copy_to_disk < prev    next >
Text File  |  1995-10-03  |  3KB  |  157 lines

  1. #!/bin/ksh
  2.  
  3. #    Do a cpio  -p after checking for room on the destination
  4.  
  5. set -u
  6. PATH=$PATH:/etc:/usr/bin
  7. name=`id -nu`
  8. if [ $name != root ]
  9. then
  10.     echo You must be root to copy the files!
  11.     exit 1
  12. fi
  13.  
  14. PWD=`pwd`
  15. umask a=rwx
  16. arg0=$0
  17. DIR=`dirname $arg0`
  18.  
  19. if [ $DIR = "." ]
  20. then
  21.     source=${PWD}
  22. else
  23.     source=${DIR}
  24. fi
  25.  
  26. progname=`basename $0`
  27. if [[ $# -ne 1 ]]
  28. then
  29.     echo "What is the destination directory? " >&2
  30.     read target
  31. else
  32.     target=$1
  33. fi
  34.  
  35. echo "Do you wish to copy the Japanese language files? [no]" >&2
  36. read doj
  37. if [ "$doj" = "Y" -o "$doj" = "YES" -o "$doj" = "Yes" -o "$doj" = "y" -o "$doj" = "yes" ]
  38. then
  39.     doj=yes
  40. else
  41.     doj=no
  42. fi
  43.  
  44. echo "Do you wish to copy the Korean language files? [no]" >&2
  45. read dok
  46. if [ "$dok" = "Y" -o "$dok" = "YES" -o "$dok" = "Yes" -o "$dok" = "y" -o "$dok" = "yes" ]
  47. then
  48.     dok=yes
  49. else
  50.     dok=no
  51. fi
  52.  
  53. echo "Do you wish to copy the Chinese language files? [no]" >&2
  54. read doc
  55. if [ "$doc" = "Y" -o "$doc" = "YES" -o "$doc" = "Yes" -o "$doc" = "y" -o "$doc" = "yes" ]
  56. then
  57.     doc=yes
  58. else
  59.     doc=no
  60. fi
  61.  
  62. if [[ ! -d $source ]]
  63. then
  64.     echo "$progname: $source is not a readable directory" >&2
  65.     exit 2
  66. fi
  67.  
  68. if [[ -d $target ]]    # It's already there
  69. then
  70.     if [[ ! -w $target ]]
  71.     then
  72.         echo "$progname: $target is not writeable by you" >&2
  73.         exit 3
  74.     fi
  75. else    # Try making it; if it's a normal file this will fail
  76.     mkdir -p $target >/dev/null 2>&1
  77.     if [[ $? -ne 0 ]]
  78.     then
  79.         echo "$progname: cannot create target directory $target">&2
  80.         exit 4
  81.     fi
  82. fi
  83.  
  84. echo "Calculating space needed..."    # du is not terribly fast
  85. needed=`du -s $source | cut -f1`
  86.  
  87. if [ "$doj" = "no" ]
  88. then
  89.     neededj=`du -s $source/lib/PowerON-II/japanese | cut -f1`
  90.     let "needed=needed-neededj"
  91. fi
  92.  
  93. if [ "$dok" = "no" ]
  94. then
  95.     neededk=`du -s $source/lib/PowerON-II/korean | cut -f1`
  96.     let "needed=needed-neededk"
  97. fi
  98.  
  99. if [ "$doc" = "no" ]
  100. then
  101.     neededc=`du -s $source/lib/PowerON-II/chinese-t | cut -f1`
  102.     let "needed=needed-neededc"
  103. fi
  104.  
  105. #    Use devnm to resolve the destination drive, then df it.  df output
  106. #    for NFS mounts includes an extra colon so don't key on it.
  107.  
  108. echo "Calculating space available..."
  109.  
  110.  
  111. targetdev=`devnm $target | cut -d' ' -f1`
  112.  
  113.  
  114. available=`df $targetdev | cut -d')' -f2 | awk '{print $2}'`
  115.  
  116. let "needed=needed/2"
  117. let "available=available/2"
  118. if [[ $needed -gt $available ]]
  119. then
  120.     echo "$progname: not enough room to copy everything" >&2
  121.     echo "           $needed Kbytes are needed but $available Kbytes are available." >&2
  122.     exit 5
  123. fi
  124.  
  125. echo "This will take $needed K bytes.  Do you wish to proceed? [yes]" >&2
  126. read pro
  127. if [ "$pro" = "Y" -o "$pro" = "YES" -o "$pro" = "Yes" -o "$pro" = "y" -o "$pro" = "yes" ]
  128. then
  129.     pro=yes
  130. else
  131.     pro=no
  132. fi
  133.  
  134. echo "Copying..."    # Don't go verbose so that error messages can be seen
  135. cd $source
  136. find ./* -path ./lib/PowerON-II/japanese -prune -o  -path ./lib/PowerON-II/korean -prune -o  -path ./lib/PowerON-II/chinese-t -prune -o -print | cpio -pudlm $target    # no 'x', no device files needed
  137.  
  138. if [ "$doj" = "yes" ]
  139. then
  140.     find ./lib/PowerON-II/japanese -print | cpio -pudlm $target    # no 'x', no device files needed
  141. fi
  142.  
  143. if [ "$dok" = "yes" ]
  144. then
  145.     find ./lib/PowerON-II/korean -print | cpio -pudlm $target    # no 'x', no device files needed
  146. fi
  147.  
  148. if [ "$doc" = "yes" ]
  149. then
  150.     find ./lib/PowerON-II/chinese-t -print | cpio -pudlm $target    # no 'x', no device files needed
  151. fi
  152.  
  153. echo "$progname: complete"
  154.  
  155. exit 0
  156.  
  157.